import greenfoot.*;  

public class LevelDefinitionButton extends Actor {
    public LevelDefinitionButton() {
        setImage(new GreenfootImage("定义苦难", 30, Color.WHITE, new Color(0,0,0,0)));
    }

    public void act() {
        if (Greenfoot.mouseClicked(this)) {
            int width = 0, height = 0, bombs = 0;
            boolean validInput = false;

            // 循环直到输入有效的尺寸
            while (!validInput) {
                String inputSize = Greenfoot.ask("输入尺寸（格式为 ?X?，范围 5-50）");
                if (inputSize != null && !inputSize.trim().isEmpty()) {
                    String[] parts = inputSize.toUpperCase().split("X", 2);
                    try {
                        width = Integer.parseInt(parts[0].trim());
                        height = Integer.parseInt(parts[1].trim());

                        // 验证尺寸范围
                        if (width >= 5 && height >= 5 && width <= 50 && height <= 50) {
                            validInput = true; // 输入有效，退出循环
                        } else {
                            showErrorMessage("输入的尺寸无效，请确保在范围 5-50 之间。");
                        }
                    } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {
                        showErrorMessage("输入格式不正确，请按照格式 ?X? 输入。");
                    }
                } else {
                    showErrorMessage("输入不能为空，请输入有效的尺寸。");
                }
            }

            // 输入地雷数量
            String inputBombs = Greenfoot.ask("输入地雷数量");
            if (inputBombs != null && !inputBombs.trim().isEmpty()) {
                try {
                    bombs = Integer.parseInt(inputBombs.trim());
                    Greenfoot.setWorld(new GameWorld(width, height, bombs));
                } catch (NumberFormatException e) {
                    showErrorMessage("地雷数量输入不正确，请输入有效数字。");
                }
            }
        }
    }

    private void showErrorMessage(String message) {
        Greenfoot.ask(message); // 使用输入框显示错误信息
    }
}
